package me.aartikov.alligator.animations.providers;

import me.aartikov.alligator.animations.AnimationData;
import me.aartikov.alligator.animations.DialogAnimation;
import me.aartikov.alligator.Screen;

/**
 * Provider of a {@link DialogAnimation}.
 */
public interface DialogAnimationProvider {
    /**
     * Is called when a {@link DialogAnimation} is needed to show a screen represented by a dialog fragment.
     *
     * @param screenClass   a class of a shown screen
     * @param animationData data for an additional animation configuring
     * @return an animation that will be used to show a dialog fragment
     */

    DialogAnimation getAnimation(Class<? extends Screen> screenClass,
                                 AnimationData animationData);
}
